package com.geekgo.KVTE;

/**
 * @author HeHaoyang
 * @version 2016/6/12 18:39
 */
/*jdk中的K,V,T,E等泛型名称很多人以为是固定写法，其实这些名称是可以改的，比如改成zhangsan,lisi都可以，
jdk为了容易看懂，所以用K表示键，V表示值，T表示type类型，E表示enum枚举，其实这四个都只是符号，都是表示泛型名称,
下面的例子的T全部可以换成E，也可以换成K,V,zhangsan，都没关系。
? 表示不确定的类型
        Object java中所有类的父类。*/

import java.util.ArrayList;
import java.util.List;

/** T1,T2都是随便定义的名称，注意1:他们不会关联到其他类，只是在本类中通用，只是告诉我们new的时候要加入泛型*/
public class AllGenericity<T1,T2> {
    public static void main(String[] args) {

        System.out.println(new AllGenericity<String, String>().getOne());
        new AllGenericity<String,String>().printTClassName("Type");
        new AllGenericity<String,String>().getClass(String.class);
    }

    T1 getOne(){
        return (T1)"one";
    }

    public <T> void printTClassName(T t){
        System.out.println("name:"+t.getClass().getName());
        System.out.println("simpleName:"+t.getClass().getSimpleName());
    }
    public <T> Class<?> getClass(Class<T> clazz){
        System.out.println("name:"+clazz.getName());
        System.out.println("simpleName:"+clazz.getSimpleName());
        List<T> list = new ArrayList<>();
        System.out.println(list);
        return clazz;
    }
}
